package servicos;

import java.io.File;

import resposta.CabecalhoResposta;
import resposta.Resposta;
import sessao.Sessao;
import util.Servico;
import beans.Cliente;
import beans.Cookie;
import dao.ClienteDao;
import factory.DaoFactory;

public class ManterCliente implements Servico {
	private ClienteDao clienteDao = DaoFactory.getClienteDao();
	private Sessao sessao =  Sessao.getSessao();
	public ManterCliente(){
		
	}
	
	@Override
	public void executa(Resposta resposta) {
		String cook = resposta.getRequisicao().getCabecalho().getValor("Cookie");	
		if(cook.length() > 1){
			String parts[] = cook.split("=");
			Cookie cookie = new Cookie(parts[0].trim(),parts[1].trim());
			if(sessao.validarCookie(cookie)){
				String alterar = resposta.getRequisicao().getMetodo().getParametros().getParametro("alterar");
				String excluir = resposta.getRequisicao().getMetodo().getParametros().getParametro("excluir");
				if(alterar != null){
					Cliente c = new Cliente();
					c.setId(Long.parseLong(resposta.getRequisicao().getMetodo().getParametros().getParametro("id")));
					c.setNome(resposta.getRequisicao().getMetodo().getParametros().getParametro("nome"));
					c.setEndereco(resposta.getRequisicao().getMetodo().getParametros().getParametro("endereco"));
					c.setCidade(resposta.getRequisicao().getMetodo().getParametros().getParametro("cidade"));
					c.setEstado(resposta.getRequisicao().getMetodo().getParametros().getParametro("estado"));
					c.setCep(resposta.getRequisicao().getMetodo().getParametros().getParametro("cep"));
					c.setEmail(resposta.getRequisicao().getMetodo().getParametros().getParametro("email"));
					if(clienteDao.alterarCliente(c)){
						String root = "trabalho3bi";
						String recurso = "sucessoAlterar.html";
						resposta.setRecurso(recurso);
						resposta.setRoot(root);
						File file = new File(root+"\\"+recurso);
						CabecalhoResposta cabecalhoResposta = new CabecalhoResposta(file.length(), "text/html");				
						resposta.setCabecalhoResposta(cabecalhoResposta);
						resposta.despacharCabecalho();
						resposta.despacharRecurso();
					}else{
						String root = "trabalho3bi";
						String recurso = "erroAlterar.html";
						resposta.setRecurso(recurso);
						resposta.setRoot(root);
						File file = new File(root+"\\"+recurso);
						CabecalhoResposta cabecalhoResposta = new CabecalhoResposta(file.length(), "text/html");				
						resposta.setCabecalhoResposta(cabecalhoResposta);
						resposta.despacharCabecalho();
						resposta.despacharRecurso();
					}
				}else if(excluir != null){
					Cliente c = new Cliente();
					c.setId(Long.parseLong(resposta.getRequisicao().getMetodo().getParametros().getParametro("id")));
					if(clienteDao.excluirCliente(c)){
						String root = "trabalho3bi";
						String recurso = "sucessoExcluir.html";
						resposta.setRecurso(recurso);
						resposta.setRoot(root);
						File file = new File(root+"\\"+recurso);
						CabecalhoResposta cabecalhoResposta = new CabecalhoResposta(file.length(), "text/html");				
						resposta.setCabecalhoResposta(cabecalhoResposta);
						resposta.despacharCabecalho();
						resposta.despacharRecurso();
					}else{
						String root = "trabalho3bi";
						String recurso = "erroExcluir.html";
						resposta.setRecurso(recurso);
						resposta.setRoot(root);
						File file = new File(root+"\\"+recurso);
						CabecalhoResposta cabecalhoResposta = new CabecalhoResposta(file.length(), "text/html");				
						resposta.setCabecalhoResposta(cabecalhoResposta);
						resposta.despacharCabecalho();
						resposta.despacharRecurso();
					}
					
				}else{
					System.err.println("operação invalida(exlcuir ou editar)");
				}
//				Cliente cliente = new Cliente(1, resposta.getRequisicao().getMetodo().getParametros().getParametro("nome"),
//						resposta.getRequisicao().getMetodo().getParametros().getParametro("endereco"),
//						resposta.getRequisicao().getMetodo().getParametros().getParametro("cidade"),
//						resposta.getRequisicao().getMetodo().getParametros().getParametro("estado"), 
//						resposta.getRequisicao().getMetodo().getParametros().getParametro("cep"), 
//						resposta.getRequisicao().getMetodo().getParametros().getParametro("email"));
//				String root = "trabalho3bi";
//				resposta.setRoot(root);
//				if(clienteDao.cadastrarCliente(cliente) == 1){						
//					String recurso = "sucessoCadastro.html";
//					resposta.setRecurso(recurso);
//					File file = new File(root+"\\"+recurso);
//					CabecalhoResposta cabecalhoResposta = new CabecalhoResposta(file.length(), "text/html");				
//					resposta.setCabecalhoResposta(cabecalhoResposta);
//					resposta.despacharCabecalho();
//					resposta.despacharRecurso();
//				}else{
//					String recurso = "erroCadastro.html";
//					resposta.setRecurso(recurso);
//					File file = new File(root+"\\"+recurso);
//					CabecalhoResposta cabecalhoResposta = new CabecalhoResposta(file.length(), "text/html");				
//					resposta.setCabecalhoResposta(cabecalhoResposta);
//					resposta.despacharCabecalho();
//					resposta.despacharRecurso();
//				}
			
				

			}else{
				negarAcesso(resposta);
			}
		}else{
			negarAcesso(resposta);			
		}
		
	}
	private void negarAcesso(Resposta resposta){
		System.err.println("entrou aqui");
		String root = "titanic\\";
		resposta.setRoot(root);
		resposta.setRecurso("sessaoExpirada.html");
		File file = new File(root+"\\sessaoExpirada.html");
		CabecalhoResposta cabecalhoResposta = new CabecalhoResposta(file.length(), "text/html");
		resposta.setCabecalhoResposta(cabecalhoResposta);
		resposta.despacharCabecalho();
		resposta.despacharRecurso();
	}
}
